home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 10
/
FM Towns Free Software Collection 10.iso
/
tos_updt
/
fmcity
/
palcom
/
auto
/
script
/
automain.mx
< prev
next >
Wrap
Text File
|
1995-02-10
|
10KB
|
336 lines
//--------------------------------------------------------------------------//
// PALCOM V2.1 L10 //
// 自動通信:自動通信メインスクリプト //
// //
// CopyRight(C) 1994/10/20 //
// FUJITSU PERSONAL COMPUTER SYSTEMS LIMITED //
// written by C-cube Soft T.Nakamura //
//--------------------------------------------------------------------------//
event @OPEN.EXTERN {
sys.pushCursor( 81 );
//--- ライブラリファイル(AUTOLIB.MX) が読み込まれているかどうか ---//
//--- チェックし、読み込まれていなければ読み込む ---//
$flg = 0;
foreach( $a, script.status( #EXTERN, 1 )) {
$fileName = list.getLast( str.split( $a, "\\" ));
if( $fileName == "AUTOLIB.MX" ) {
$flg = 1;
exit;
}
}
if( $flg == 0 ) {
script.openExtern( str.join([$$DIR.STANDARD,
"AUTO\\SCRIPT\\AUTOLIB.MX"], "" ),
#TRUE,
[[],
" NIFTY-Serve 自動通信スクリプト V1.0 L10 ",
"",
" COPYRIGHT (C) 1995 ",
" FUJITSU & FUJITSU PERSONAL COMPUTER SYSTEMS ",
[]] );
dialog.close();
}
//--- 自動通信設定の読み込み ---//
$path = str.join([$$DIR.STANDARD, "BBS\\AUTOTRAN.ENV"],"" );
if( file.exist( $path ) == #FALSE ) {
$saveXsize = dialog.getDefaultXSize();
dialog.setDefaultXSize( 292 );
sys.pushCursor( 80 );
$ret = dialog.ask([
"━━━━━━━━ 自動通信 ━━━━━━━━",
"",
" 自動通信の環境が設定されていません。 ",
""],["中止","続行"] );
sys.popCursor();
dialog.setDefaultXSize( $saveXsize );
if( $ret == 0 ) {
return;
}
}
if(( $ret = local.loadAutoEnv( $path, "", #TRUE, 0, 0 )) == #FALSE ) {
return;
}
AUTO.setDefaultData( $ret );
//--- データベースファイルを読み込む ---//
AUTO.openDBfile();
//--- メインループ ---//
$exitFlg = 0;
loop {
//--- 設定選択ダイアログの表示 ---//
if( Auto.selectDialog() == #FALSE ) {
if( $exitFlg == -1 ) { // 新規作成で取り消された場合
exit;
}
$exitFlg = -1;
goto SET_NEWMAKE;
}
//--- 復帰値の判定&処理 ---//
table( AUTO.getDialogReturn()) {
else { $exitFlg = 1; } // エラー
0 { $exitFlg = 1; } // 終了
1 { // 実行
AUTO.setErrorFlg( #FALSE );
$path = str.join([$$DIR.STANDARD,
"AUTO\\SCRIPT\\SETLOAD.MX"], "" );
script.openExtern( $path, #FALSE, [] );
$path = str.join([$$DIR.STANDARD,
"AUTO\\SCRIPT\\AUTOCOM.MX"], "" );
script.openExtern( $path, #FALSE, [] );
if( AUTO.getErrorFlg() == #TRUE ) {
$path = str.join([$$DIR.STANDARD,
"AUTO\\SCRIPT\\AUTOERR.MX"], "" );
script.openExtern( $path, #FALSE, [] );
}
}
2 { // 編集
$path = str.join([$$DIR.STANDARD,
"AUTO\\SCRIPT\\SETLOAD.MX"], "" );
script.openExtern( $path, #FALSE, [] );
$path = str.join([$$DIR.STANDARD,
"AUTO\\SCRIPT\\AUTOEDIT.MX"], "" );
script.openExtern( $path, #FALSE, [] );
if( AUTO.getDialogReturn() == 1 ) {
//--- 設定の場合、ファイルに出力する ---//
$path = str.join([$$DIR.STANDARD,
"AUTO\\SCRIPT\\SETSAVE.MX"], "" );
script.openExtern( $path, #FALSE, [] );
}
}
3 { // 新規作成
SET_NEWMAKE : $autoSetName = list.getNth( AUTO.getSetName(), 1 );
$autoSetFileName = list.getNth( AUTO.getSetName(), 2 );
AUTO.setSetName( "", "" );
AUTO.setSetData( [
[[0,3,10],[#FALSE,#FALSE],[#FALSE,#FALSE,#FALSE,#FALSE],
[#FALSE,#FALSE],[#FALSE,#FALSE],[#FALSE],[#FALSE,#FALSE],
[#FALSE,#FALSE],[#UNKNOWN,0],[#UNKNOWN,0],[""]
],
[],
[],
[],
[]
] );
$path = str.join([$$DIR.STANDARD,
"AUTO\\SCRIPT\\AUTOEDIT.MX"], "" );
script.openExtern( $path, #FALSE, [] );
if( AUTO.getDialogReturn() == 0 ) {
AUTO.setSetName( $autoSetName, $autoSetFileName );
} elif( AUTO.getDialogReturn() == 1 ) {
$path = str.join([$$DIR.STANDARD,
"AUTO\\SCRIPT\\SETSAVE.MX"], "" );
script.openExtern( $path, #FALSE, [] );
}
}
}
//--- 終了? ---//
if( $exitFlg == 1 ) {
exit;
}
}
AUTO.closeDBfile();
local.restoreAutoEnv();
AUTO.freeData();
return;
}
event @CLOSE.EXTERN{
sys.popCursor();
return;
}
event @ERROR {
local.errorFunc();
event.mainLoop();
}
//--------------------------------------//
//--- 設定の選択ダイアログの制御 ---//
//--------------------------------------//
function Auto.selectDialog() {
$dataList = Auto.getAutoNameList();
$autoNameList = list.getNth( $dataList, 2 );
$fileNameList = list.getNth( $dataList, 1 );
//--- 設定ファイルが1つも無い場合、新規作成をさせる ---//
if( list.size( $fileNameList ) == 0 ) {
return( #FALSE );
}
//--- 前回選択された物をデフォルトの選択状態にする ---//
$defList = [1];
$fileName = list.getNth( AUTO.getSetName(), 2 );
$i = 1;
foreach( $a, $fileNameList ) {
if( $fileName == $a ) {
$defList = [$i];
}
$i = $i + 1;
}
//--- ボタンの設定 ---//
$delBtnId = dialog.makeButton( 1, "削除", 0, 0x007F );
$cancelBtnId = dialog.makeButton( 1, "終了", 0, 0x801D );
$setBtnId = dialog.makeButton( 1, "実行", 0, 0x8012 );
$editBtnId = dialog.makeButton( 1, "編集", 0, 0 );
$newBtnId = dialog.makeButton( 1, "新規作成", 0, 0 );
//--- ダイアログ構成リストの設定 ---//
$dialogList = ["自動通信設定の選択", 0, -1, -1, $setBtnId,
["", 1028, [40,10,0], $autoNameList, $defList],
["", $cancelBtnId, [0], [""], [""]],
["", $setBtnId, [0], [""], [""]],
["", $editBtnId, [0], [""], [""]],
["", $delBtnId, [0], [""], [""]],
["", $newBtnId, [0], [""], [""]]];
//--- ダイアログ表示 ---//
DIALOG_OPEN:
sys.pushCursor( 80 );
dialog.open( $dialogList );
sys.popCursor();
//--- 復帰値をチェック&設定 ---//
$btnNo = list.get1st( $$DIALOG.RETURN );
$no = list.get1st( list.getNth( $$DIALOG.RETURN, 2 ));
//--- 選択されていないと実行出来ない物のチェック ---//
if(( $no == -1 )&&(( $btnNo == $editBtnId )||( $btnNo == $delBtnId ))) {
goto DIALOG_OPEN;
}
//--- 復帰値のチェック ---//
table( $btnNo ) {
$delBtnId {
if( Auto.delete( list.getNth( $autoNameList, $no ),
list.getNth( $fileNameList, $no )) == 0 ) {
list.delNth( $autoNameList, $no );
list.delNth( $fileNameList, $no );
if( $no > list.size( $autoNameList )) {
$no = $no - 1;
}
list.del1st( $defList );
list.put1st( $defList, $no );
}
goto DIALOG_OPEN;
}
$cancelBtnId { $btnNo = 0; }
$setBtnId { $btnNo = 1; }
$editBtnId { $btnNo = 2; }
$newBtnId { $btnNo = 3; }
else { $btnNo = -1; }
}
AUTO.setDialogReturn( $btnNo );
//--- 「編集」及び「設定」の場合、 ---//
//--- ファイル名・設定名を設定する ---//
if(( $btnNo == 1 )||( $btnNo == 2 )) {
AUTO.setSetName( list.getNth( $autoNameList, $no ),
list.getNth( $fileNameList, $no ));
}
//--- 後始末 ---//
dialog.delButton( $cancelBtnId );
dialog.delButton( $setBtnId );
dialog.delButton( $editBtnId );
dialog.delButton( $newBtnId );
dialog.delButton( $delBtnId );
return( #TRUE );
}
//------------------------------------//
//--- 設定ファイルリストの獲得 ---//
//------------------------------------//
function Auto.getAutoNameList() {
$fileNameList = [];
$setNameList = [];
//--- AUTO ディレクトリのファイルリストを獲得 ---//
$dir = str.join([$$DIR.STANDARD, "AUTO"], "" );
$dirList = file.listDir( $dir, #FALSE, #FALSE );
foreach( $fileName, $dirList ) {
//--- .SET のファイルのみを処理する ---//
if( str.match( $fileName, ".SET", 0 ) == -1 ) {
continue;
}
//--- 1行目の識別子を読み込み、チェック ---//
$id = file.open( $fileName, "", 1 );
$str = file.getString( $id );
if( $str == "--- AUTO-SET-FILE ---\n" ) {
//--- 設定名を読み込む ---//
$str = str.replaceAll( file.getString( $id ), "\n", "" );
list.putLast( $fileNameList, $fileName );
list.putLast( $setNameList, $str );
}
file.close( $id );
}
return( [$fileNameList, $setNameList] );
}
//------------------------------//
//--- 設定ファイルの削除 ---//
//------------------------------//
function Auto.delete( $name, $setName ) {
$dir = str.join( list.delLast( str.split( $setName, "\\" )), "\\" );
$tmp = [file.autoName( $dir, 0 )];
$str = str.join(["【",$name,"】"], "" );
$errName = str.join( list.delLast( str.split( $setName, "." )), "." );
$errName = str.join( [$errName, ".ERR"], "" );
//--- ボタンの設定 ---//
$canBtnId = dialog.makeButton( 1, "取消", 0, 0x8011 );
$setBtnId = dialog.makeButton( 1, "実行", 0, 0x8012 );
//--- ダイアログ構成リストの設定 ---//
$dialogList = [
"━━━━━━ 自動通信設定の削除 ━━━━━━",
0, -1, -1, $setBtnId,
["", 1024, [0], [""], [""]],
["", 1024, [2], [$str], [""]],
["", 1024, [1], ["の設定を削除します。"], [""]],
["", 1024, [0], [""], [""]],
["", $canBtnId, [0], [""], [""]],
["", $setBtnId, [0], [""], [""]]
];
//--- ダイアログの表示 ---//
$saveXsize = dialog.getDefaultXSize();
dialog.setDefaultXSize( 300 );
sys.pushCursor( 80 );
dialog.open( $dialogList );
sys.popCursor();
dialog.setDefaultXSize( $saveXsize );
//--- 設定の場合は、対象のファイルを削除する ---//
$btnNo = list.get1st( $$DIALOG.RETURN );
if( $btnNo == $setBtnId ) {
if( file.exist( $setName ) == #TRUE ) {
file.delete( $setName );
}
if( file.exist( $errName ) == #TRUE ) {
file.delete( $errName );
}
$ret = 0;
} else {
$ret = -1;
}
//--- 後始末 ---//
dialog.delButton( $canBtnId );
dialog.delButton( $setBtnId );
return( $ret );
}